//
//  B_2ViewController.m
//  RACExamale
//
//  Created by cym_bj on 2017/12/1.
//  Copyright © 2017年 com.cym. All rights reserved.
//

#import "B_2ViewController.h"
#import <ReactiveObjC/ReactiveObjC.h>
@interface B_2ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *lb;
@property (weak, nonatomic) IBOutlet UITextField *tf;

@end

@implementation B_2ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.navigationItem.title=@"常用的宏";
    
    //共两个例子   .1、监听的改变    2、通知
    
    [self theOne];
    [self theTwo];
    
    
    //RAC :用来给某个对象的某个属性绑定信号，只要产生信号内容，就会把内容给属性赋值.
    
    
    // RACObserve :只要这个对象的属性一改变就会产生信号
    
    
    
    
    
    
}
#pragma mark - 监听的改变
-(void)theOne
{
    
    //方式 一
    
//    [self.tf.rac_textSignal subscribeNext:^(NSString * _Nullable x) {
//
//        self.lb.text=x;
//
//    }];
    
    // 方式 二 宏的方式
    
    RAC(self.lb,text)=self.tf.rac_textSignal;
    
    
    
    
}
#pragma mark - 通知
-(void)theTwo
{
    
    //方式一;
//    [[self.lb rac_valuesForKeyPath:@"frame" observer:self] subscribeNext:^(id  _Nullable x) {
//
//        NSLog(@"哈哈，改变了%@",x);
//    }];
    
    //方式 二  宏的方式
    [RACObserve(self.lb, frame) subscribeNext:^(id  _Nullable x) {
        
        NSLog(@"方式二:=%@",x);
    }];
    
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    
    self.lb.frame=CGRectMake(20, 150, 300,40);
    
    
}


@end
